<!DOCTYPE HTML PUBLIC "-//ORA//DTD CD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>[Chapter 23] 23.22 java.beans.VetoableChangeSupport (JDK 1.1)</TITLE>
<META NAME="author" CONTENT="David Flanagan">
<META NAME="date" CONTENT="Thu Jul 31 16:18:48 1997">
<META NAME="form" CONTENT="html">
<META NAME="metadata" CONTENT="dublincore.0.1">
<META NAME="objecttype" CONTENT="book part">
<META NAME="otheragent" CONTENT="gmat dbtohtml">
<META NAME="publisher" CONTENT="O'Reilly &amp; Associates, Inc.">
<META NAME="source" CONTENT="SGML">
<META NAME="subject" CONTENT="Java">
<META NAME="title" CONTENT="Java in a Nutshell">
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">
</HEAD>
<body vlink="#551a8b" alink="#ff0000" text="#000000" bgcolor="#FFFFFF" link="#0000ee">

<DIV CLASS=htmlnav>
<H1><a href='index.htm'><IMG SRC="gifs/smbanner.gif"
     ALT="Java in a Nutshell" border=0></a></H1>
<table width=515 border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=172 align=left valign=top><A HREF="ch23_21.htm"><IMG SRC="gifs/txtpreva.gif" ALT="Previous" border=0></A></td>
<td width=171 align=center valign=top><B><FONT FACE="ARIEL,HELVETICA,HELV,SANSERIF" SIZE="-1">Chapter 23<br>The java.beans Package</FONT></B></TD>
<td width=172 align=right valign=top><A HREF="ch23_23.htm"><IMG SRC="gifs/txtnexta.gif" ALT="Next" border=0></A></td>
</tr>
</table>

&nbsp;
<hr align=left width=515>
</DIV>
<DIV CLASS=sect1>
<h2 CLASS=sect1><A CLASS="TITLE" NAME="JNUT2-CH-23-SECT-22">23.22 java.beans.VetoableChangeSupport (JDK 1.1)</A></h2>

<DIV CLASS=sect2>
<h3 CLASS=sect2><A CLASS="TITLE" NAME="JNUT2-CH-23-SECT-22.1"></A></h3>
</DIV>

<P CLASS=para>
<tt CLASS=literal>VetoableChangeSupport</tt> is a convenience class that
maintains a list of registered
<tt CLASS=literal>VetoableChangeListener</tt> objects and provides a
<tt CLASS=literal>fireVetoableChange()</tt> method for sending a
<tt CLASS=literal>PropertyChangeEvent</tt> to all registered listeners.  If
any of the registered listeners veto the proposed change,
<tt CLASS=literal>fireVetoableChange()</tt> send out another
<tt CLASS=literal>PropertyChangeEvent</tt> notifying previously notified
listeners that the property has changed back to its original
value.  

<P CLASS=para>
Because of the extra complexity of correctly handling
vetoable changes, and because of some tricky thread
synchronization issues involved in maintaining the list of
listeners, it is recommended that all Java beans that
support "constrained" events create a
<tt CLASS=literal>VetoableChangeSupport</tt> object to which they can
delegate the tasks of maintaining the list of listeners and
of firing events.

<DIV CLASS=screen>
<P>
<PRE>
public class <tt CLASS=literal>VetoableChangeSupport</tt> extends Object implements Serializable {
    // <tt CLASS=literal>Public Constructor</tt>
            public <tt CLASS=literal>VetoableChangeSupport</tt>(Object <tt CLASS=literal>sourceBean</tt>);
    // <tt CLASS=literal>Public Instance Methods</tt>
            public synchronized void <tt CLASS=literal>addVetoableChangeListener</tt>(VetoableChangeListener <tt CLASS=literal>listener</tt>);
            public void <tt CLASS=literal>fireVetoableChange</tt>(String <tt CLASS=literal>propertyName</tt>, Object <tt CLASS=literal>oldValue</tt>, Object <tt CLASS=literal>newValue</tt>)
            public void <tt CLASS=literal>fireVetoableChange</tt>'u'throws PropertyVetoException;
            public synchronized void <tt CLASS=literal>removeVetoableChangeListener</tt>(VetoableChangeListener <tt CLASS=literal>listener</tt>);
}
</PRE>
</DIV>

<P CLASS=para>
</DIV>

</DIV>


<DIV CLASS=htmlnav>

<P>
<HR align=left width=515>
<table width=515 border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=172 align=left valign=top><A HREF="ch23_21.htm"><IMG SRC="gifs/txtpreva.gif" ALT="Previous" border=0></A></td>
<td width=171 align=center valign=top><a href="index.htm"><img src='gifs/txthome.gif' border=0 alt='Home'></a></td>
<td width=172 align=right valign=top><A HREF="ch23_23.htm"><IMG SRC="gifs/txtnexta.gif" ALT="Next" border=0></A></td>
</tr>
<tr>
<td width=172 align=left valign=top>java.beans.VetoableChangeListener (JDK 1.1)</td>
<td width=171 align=center valign=top><a href="index/idx_0.htm"><img src='gifs/index.gif' alt='Book Index' border=0></a></td>
<td width=172 align=right valign=top>java.beans.Visibility (JDK 1.1)</td>
</tr>
</table>
<hr align=left width=515>

<IMG SRC="gifs/smnavbar.gif" USEMAP="#map" BORDER=0> 
<MAP NAME="map"> 
<AREA SHAPE=RECT COORDS="0,0,108,15" HREF="../javanut/index.htm"
alt="Java in a Nutshell"> 
<AREA SHAPE=RECT COORDS="109,0,200,15" HREF="../langref/index.htm" 
alt="Java Language Reference"> 
<AREA SHAPE=RECT COORDS="203,0,290,15" HREF="../awt/index.htm" 
alt="Java AWT"> 
<AREA SHAPE=RECT COORDS="291,0,419,15" HREF="../fclass/index.htm" 
alt="Java Fundamental Classes"> 
<AREA SHAPE=RECT COORDS="421,0,514,15" HREF="../exp/index.htm" 
alt="Exploring Java"> 
</MAP>
</DIV>

</BODY>
</HTML>
